PostgreSQL ডেটাবেসের ব্যাকআপ হল ডেটার নিরাপত্তা নিশ্চিত করার জন্য একটি অত্যন্ত গুরুত্বপূর্ণ প্রক্রিয়া। ডেটাবেসের ব্যাকআপ নেওয়া আপনাকে দুর্ঘটনাক্রমে ডেটা হারানো, সিস্টেম ক্র্যাশ বা অন্যান্য যেকোনো বিপর্যয় থেকে রক্ষা করে। PostgreSQL-এ বিভিন্ন ধরনের ব্যাকআপ কৌশল আছে, যা আপনার প্রয়োজন এবং ব্যবহারের ভিত্তিতে নির্বাচন করা যেতে পারে। নিচে PostgreSQL-এ ব্যাকআপ নেওয়ার প্রধান কৌশলগুলি এবং তাদের ব্যবহার ব্যাখ্যা করা হয়েছে।
1. SQL Dump Backup
এটি PostgreSQL-এ ব্যাকআপ নেওয়ার একটি সাধারণ এবং জনপ্রিয় পদ্ধতি। এই পদ্ধতিতে ডেটাবেসের সম্পূর্ণ ডেটা এবং স্কিমা (টেবিল, ভিউ, ইন্ডেক্স ইত্যাদি) একটি SQL ফাইলের মধ্যে স্টোর করা হয়। SQL Dump ব্যাকআপ ব্যবহার করে আপনি ডেটাবেসের সমস্ত ডেটা একটি টেক্সট ফাইল আকারে ধারণ করতে পারেন, যেটি পরে পুনরুদ্ধার করা যাবে।
SQL Dump ব্যাকআপ নেওয়া
- pg_dump কমান্ড ব্যবহার করে SQL dump ব্যাকআপ নেওয়া হয়। এই কমান্ডটি ডেটাবেসের সমস্ত স্কিমা এবং ডেটা SQL ফরম্যাটে একটি ফাইল হিসাবে রপ্তানি করে।
pg_dump -U username -F p dbname > dbname_backup.sql
এখানে:
-U username: PostgreSQL ব্যবহারকারীর নাম।-F p:pএর মাধ্যমে plain SQL ফরম্যাটে ব্যাকআপ নেওয়া হয়।dbname: ডেটাবেসের নাম।
ব্যাকআপের উদাহরণ:
pg_dump -U postgres -F p mydatabase > mydatabase_backup.sql
ব্যাকআপ পুনরুদ্ধার করা
SQL dump ফাইল থেকে ব্যাকআপ পুনরুদ্ধার করতে psql কমান্ড ব্যবহার করা হয়:
psql -U username -d dbname < dbname_backup.sql
2. File System Level Backup (Physical Backup)
এই কৌশলে ডেটাবেসের সমস্ত ফাইল সিস্টেমের স্তরে কপি করা হয়, যার মাধ্যমে সমস্ত ডেটাবেসের ফাইল এবং সিস্টেমের স্টেট রক্ষিত থাকে। এটি pg_data ডিরেক্টরির পূর্ণ ব্যাকআপ নেয়, যা PostgreSQL ডেটাবেসের সমস্ত ফাইল ধারণ করে।
File System Level Backup নেওয়া
PostgreSQL সার্ভার স্টপ করুন:
sudo systemctl stop postgresqlpg_dataডিরেক্টরির সমস্ত ফাইল কপি করুন:cp -r /var/lib/pgsql/data /path/to/backup/directoryPostgreSQL সার্ভার আবার চালু করুন:
sudo systemctl start postgresql
ব্যাকআপ পুনরুদ্ধার করা
ফাইল সিস্টেম লেভেল ব্যাকআপ থেকে পুনরুদ্ধারের জন্য, ব্যাকআপ কপি করা ফাইলগুলি আবার pg_data ডিরেক্টরিতে কপি করে সার্ভারটি রিস্টার্ট করতে হবে।
cp -r /path/to/backup/directory/* /var/lib/pgsql/data
sudo systemctl start postgresql
3. pg_basebackup
pg_basebackup হল PostgreSQL এর একটি টুল যা ফিজিক্যাল ব্যাকআপ তৈরি করতে ব্যবহৃত হয়। এটি বিশেষ করে রেপ্লিকেশন ব্যবস্থায় ব্যবহৃত হয়, যেখানে স্লেভ সার্ভারে একটি ব্যাকআপ নেওয়া হয়।
pg_basebackup ব্যাকআপ নেওয়া
pg_basebackup -D /path/to/backup/directory -F tar -z -P -U username
এখানে:
-D /path/to/backup/directory: ব্যাকআপ ফাইল সংরক্ষণ করতে যেখানে স্থান দেওয়া হবে।-F tar: ব্যাকআপটি.tarফরম্যাটে সংরক্ষণ করা হবে।-z: ব্যাকআপ ফাইলটি জিপ করা হবে।-P: প্রগ্রেস ইনফরমেশন দেখাবে।-U username: PostgreSQL ব্যবহারকারীর নাম।
ব্যাকআপ পুনরুদ্ধার করা
ব্যাকআপ পুনরুদ্ধার করতে, pg_basebackup এর মাধ্যমে তৈরি করা ব্যাকআপ ডিরেক্টরির সমস্ত ফাইলকে pg_data ডিরেক্টরিতে কপি করতে হবে। এরপর PostgreSQL সার্ভার রিস্টার্ট করতে হবে।
cp -r /path/to/backup/directory/* /var/lib/pgsql/data
sudo systemctl start postgresql
4. Continuous Archiving (WAL Archiving)
PostgreSQL-এ Write-Ahead Logging (WAL) ব্যবহার করা হয় যা প্রতিটি ট্রানজেকশন রেকর্ডের একটি লগ তৈরি করে। এই WAL ফাইলগুলির সাহায্যে আপনি ইনক্রিমেন্টাল ব্যাকআপ নিতে পারেন এবং ডেটাবেসের কোনো পরিবর্তন বা ট্রানজেকশন মিস না হওয়ার নিশ্চয়তা দিতে পারেন।
WAL Archiving কনফিগারেশন
PostgreSQL কনফিগারেশন ফাইলে
archive_modeএবংarchive_commandসেট করতে হবে:postgresql.confফাইলে:
archive_mode = on archive_command = 'cp %p /path/to/archive/%f'pg_walডিরেক্টরি থেকে সমস্ত WAL ফাইল আর্কাইভ করা হবে এবং তা ব্যাকআপ ফোল্ডারে সংরক্ষিত থাকবে।
ব্যাকআপ পুনরুদ্ধার করা
WAL ফাইলগুলির সাহায্যে ব্যাকআপ পুনরুদ্ধার করা যায়, যা restore_command ব্যবহার করে আগের স্থানে ফেরত আনা হয়।
5. Hot Standby / Replication Based Backup
PostgreSQL-এ হট স্ট্যান্ডবাই রেপ্লিকেশন কনফিগারেশন দ্বারা একটি স্লেভ সার্ভারে একটি ব্যাকআপ তৈরি করা যায়। এটি মূল সার্ভারের ট্রানজেকশন লগের মাধ্যমে ডেটা সিঙ্ক্রোনাইজ করতে সহায়তা করে এবং স্লেভ সার্ভারকে একটি কপি হিসেবে রেখে ডেটা ব্যাকআপ করা হয়।
হট স্ট্যান্ডবাই কনফিগারেশন:
- Primary Server (Master):
postgresql.confএবংpg_hba.confফাইল কনফিগার করা হয়।
- Secondary Server (Replica):
- Replica সার্ভারে
pg_basebackupব্যবহার করে ব্যাকআপ নেওয়া হয় এবং সেটি হট স্ট্যান্ডবাই হিসেবে কনফিগার করা হয়।
- Replica সার্ভারে
সারাংশ
PostgreSQL-এ ব্যাকআপ নেওয়ার জন্য বিভিন্ন কৌশল রয়েছে, যেমন:
- SQL Dump: টেবিল এবং ডেটার একটি টেক্সট ফাইল হিসাবে ব্যাকআপ।
- File System Level Backup: PostgreSQL ডেটাবেসের সম্পূর্ণ ডেটা ফাইলের কপি তৈরি করা।
- pg_basebackup: ফিজিক্যাল ব্যাকআপ যা রেপ্লিকেশন ব্যবস্থায় ব্যবহৃত হয়।
- WAL Archiving: ইনক্রিমেন্টাল ব্যাকআপ এবং ডেটা পুনরুদ্ধার করার জন্য ব্যবহার করা হয়।
- Hot Standby / Replication Based Backup: রেপ্লিকেশন কনফিগারেশন থেকে স্লেভ সার্ভারে ব্যাকআপ নেওয়া হয়।
প্রতিটি কৌশল তার নিজস্ব সুবিধা এবং ব্যবহারের ক্ষেত্র অনুযায়ী বেছে নেওয়া যেতে পারে। SQL Dump সাধারণত ছোট ডেটাবেসের জন্য, pg_basebackup এবং WAL Archiving বৃহৎ ডেটাবেসের জন্য কার্যকর।
Read more